package jmine.tec.hydra.codec;

/**
 * Interface que determina o comportamento de um Encoder. As implementações desta interface deveram conter o lógica de como se codificar um
 * objeto para uma mensagem texto do formato do Codec.
 * 
 * @author piercio.
 */
public interface Encoder {

    String IDENTIFICATION = "identification";

    /**
     * Codifica o objeto Message para uma mensagem de formato texto.
     * 
     * @param source o conteúdo com todas informações para a criação da mensagem.
     * @return a mensagem codificada em formato texto.
     */
    EncoderData encode(Object source);
}